package com.qf.fcy.youshare.fragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import com.qf.fcy.youshare.R;
import com.qf.fcy.youshare.adapter.StoreCoreAdapter;
import com.qf.fcy.youshare.adapter.StorePlatformAdapter;
import com.qf.fcy.youshare.model.Product;
import com.qf.fcy.youshare.task.ProductListTask;
import com.qf.fcy.youshare.utils.TaskProcessor;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: Alex[FR]
 * Date: 2015/2/5
 * Email: alex_fcy@163.com
 */
public class StoreCoreFragment extends Fragment implements TaskProcessor {
    /**
     * 判断 Fragment是否已经加载过（onCreateView）一次
     * 这里ViewPager 只有两个Fragment, 所以在切换的时候不会进入onDestroyView 方法
     * 也就不会进入onCreateView 方法，所以这里可以不写。
     * 如果ViewPager 有3个及以上个Fragment, 那么会出现onDestroyView, onCreateView
     * 为了防止在切换多个Fragment时，Fragment中多次开异步任务可以使用 判断这种方式
     */
    public boolean hasFirstLoad = false;
    private StoreCoreAdapter adapter;
    private LinkedList<Product> products;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View ret = inflater.inflate(R.layout.fragment_store_core, container, false);

        ListView listView = (ListView) ret.findViewById(R.id.list_store_core_product);
        // TODO 设置Adapter
        products = new LinkedList<Product>();
        adapter = new StoreCoreAdapter(getActivity(), products);
        listView.setAdapter(adapter);


        if (!hasFirstLoad) {
            ProductListTask task = new ProductListTask(this);
            task.execute("1", "20");
        }

        return ret;
    }

    /**
     * 异步任务更新UI的回调方法
     *
     * @param result
     */
    @Override
    public void processor(JSONObject result) {
        // TODO 显示商品列表
        hasFirstLoad = true;

        try {
            int code = result.getInt("code");
            if (code == 1) {
                // TODO 正确数据，需要解析
                JSONObject msg = result.getJSONObject("msg");
                JSONObject data = msg.getJSONObject("data");
                Iterator iterator = data.keys();

                List<Product> productList = new LinkedList<Product>();

                while (iterator.hasNext()) {
                    String key = (String) iterator.next();
                    JSONObject object = data.getJSONObject(key);
                    Product product = new Product();
                    product.parseJSON(object);
                    productList.add(product);
                }

                // 注意，如果是刷新数据，那么products 成员变量就需要清空，然后用
                // productList里面的内容添加到 products中，相当于ListView重新加载
                // 如果需要实现，“加载更多”的操作，那么就不能清空 List, 而是直接添加
                products.addAll(productList);
                adapter.notifyDataSetChanged();

            } else {
                String msg = result.getString("msg");
                Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}